1. Field of the Invention
The present invention relates to a storage controller for interfacing between a host system and a direct access storage device (DASD) system and, in preferred embodiments, a storage controller including a failback and failover system for handling a point of failure within the storage controller.
2. Description of the Related Art
In a large distributed computer system, a plurality of host computers and devices are typically connected to a number of direct access storage devices (DASDs) comprised of hard disk drives (HDDs). The DASDs may be organized in a redundant array of independent disks, i.e., a RAID array. A RAID array is comprised of multiple, independent disks organized into a large, high-performance logical disk. A controller stripes data across the multiple disks in the array and accesses the disks in parallel to achieve higher data transfer rates. However, utilizing multiple disks in an array increases the risk of failure. The solution in the art is to employ redundancy in the form of error-correcting codes to tolerate disk failures. The arrangement and organization of RAID arrays is described in Peter M. Chen, Edward K. Lee, Garth A. Gibson, Randy H. Katz, and David A. Patterson, "RAID: High-Performance, Reliable Secondary Storage," ACM Computing Surveys, Vol. 6, No. 2, June 1994, which is incorporated herein by reference in its entirety.
Not only is there a risk associated with the failure of a hard disk drive in a DASD system such as a RAID array, but there is also a risk of failure at a point within a storage controller which controls read and write operations between host computers and the DASDs. The conventional storage controller is typically designed to handle hardware failures. One such storage control designed to handle certain hardware failures is the storage controller utilized in the International Business Machines Corporation's (IBM) 3990 Model 3 system. This storage controller has two storage clusters, each of which provides for selective connection between a host computer and a DASD. Each cluster is on a separate power boundary. Further, a non-volatile storage unit (NVS) is associated with each cluster. The NVS is a memory array supported by a battery backup system. The NVS stores back-up copies of modified data in the event of a hardware failure within the storage controller while data is being written to a DASD. The NVS provides a storage back-up that is as secure as writing the data to a magnetic disk. Failback systems for storage controllers are described in U.S. Pat. Nos. 5,636,359, 5,437,022, 5,640,530, and 4,916,605, all of which are assigned to IBM, the assignee of the subject application, and all of which arc incorporated herein by reference in their entirety.
In U.S. Pat. Nos. 5,437,022 and 5,640,530, as with the IBM 3990, model 3, the storage controller is comprised of two clusters, wherein each cluster has a cache and a NVS. The cache buffers frequently used data. When a request is made to write data to a DASD attached to the storage controller, the storage controller may cache the data and delay writing the data to a DASD. Caching data can save time as writing operations involve time consuming mechanical operations. The cache and NVS in each cluster can intercommunicate, allowing for recovery and reconfiguration of the storage controller in the event that one of the memory elements is rendered unavailable. For instance, if one cluster and its cache fails, the NVS in the other cluster maintains a back-up of the cache in the failed cluster.
In one caching operation, referred to as DASD fast write, data buffered in the cache is backed-up in the NVS. Thus, two copies of data modifications are maintained, one in the cache and another in the NVS. DASD fast write is typically used for data that will be written to the DASD. If the data to be written to the DASD is present in the cache, instead of writing the data to the DASD, the controller copies the data into the cache and NVS without having to interrupt processing to immediately write to the DASD. If the data to be written is not present in the cache, then the data is written to the DASD and cache simultaneously and immediately. Another caching operation, referred to as cache fast write, involves writing data to the cache without using the NVS. Cache fast write is intended for data that is not needed for job completion or that can be easily reconstructed.
Notwithstanding, the storage controller disclosed in U.S. Pat. Nos. 5,437,022 and 5,640,530 comprises a complex and custom hardware structure, wherein each storage path in a cluster requires its own custom microcontroller and microcode. In fact, U.S. Pat. No. 5,640,530, at column 6, lines 50-57, makes note of the added complexity of the system which requires that each microcontroller maintains and updates information concerning the location of data for read, writes and other data transfers.
Moreover, data transfer rates in a storage controller are determined by the data-transfer rates at each connectivity point within the controller. The speed at which processed data travels between a host and DASDs, such as a RAID array, is restricted by the maximum data-transfer rate possible through each peripheral interface. In current systems, data transfer rates are significantly degraded when a cluster fails, because the remaining cluster must then handle all data transfers. In storage control systems which involve complex arrangements to handle failovers, such as the system disclosed in U.S. Pat. Nos. 5,437,022 and 5,640,530, the complexity of the system can further degrade data transfer rates when one cluster must take over data transfers previously handled by the failed clusters.
Yet further, in some prior art systems, the NVS and storage controller have single points of failure which can disable the entire cache and NVS, resulting in substantial performance degradation.